package com.ssy.lingxi.contract.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.contract.model.bo.sign.SignAuthNotifyBO;
import com.ssy.lingxi.contract.model.vo.sign.request.*;
import com.ssy.lingxi.contract.model.vo.sign.response.FaceVerifyResponse;
import com.ssy.lingxi.contract.model.vo.sign.response.SignatureApplyResponse;
import com.ssy.lingxi.contract.model.vo.sign.response.SignatureAuthResponse;
import com.ssy.lingxi.contract.model.vo.sign.response.SignatureAuthStateResponse;


/**
 * 电子签章认证服务类
 * @author yzc
 * @version 2.0.0
 * @date 2020/9/1
 */
public interface ISignatureAuthService {

    /**
     * 电子签章认证详情
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<SignatureAuthResponse> getSignatureDetail(UserLoginCacheDTO loginUser);

    /**
     * 电子签章查询认证状态
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<SignatureAuthStateResponse> getAuthState(UserLoginCacheDTO loginUser);

    /**
     * 申请认证
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<SignatureApplyResponse> signatureApply(UserLoginCacheDTO loginUser);

    /**
     * 法人认证
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> legalRepAuth(LegalRepAuthAuthRequest request, UserLoginCacheDTO loginUser);

    /**
     * 经办人认证
     *
     * @param request
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> agentAuth(AgentAuthRequest request, UserLoginCacheDTO loginUser);

    /**
     * 个人认证
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> personalAuth(PersonalAuthRequest request, UserLoginCacheDTO loginUser);

    /**
     * 发起对公打款认证
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> paymentVerifyCreate(PaymentVerifyCreateRequest request, UserLoginCacheDTO loginUser);

    /**
     * 对公打款认证金额校验
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<FaceVerifyResponse> paymentVerifyAmount(PaymentVerifyAmountRequest request, UserLoginCacheDTO loginUser);

    /**
     * 发起法人签署认证
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> legalRepSignVerify(LegalRepSignVerifyRequest request, UserLoginCacheDTO loginUser);

    /**
     * 发起刷脸认证
     * @param request
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<FaceVerifyResponse> faceVerify(FaceVerifyRequest request, UserLoginCacheDTO loginUser);

    /**
     * 发起手机认证
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> mobileVerify(MobileVerifyRequest request, UserLoginCacheDTO loginUser);

    /**
     * 手机认证验证码校验
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> mobileVerifyCode(MobileVerifyCodeRequest request, UserLoginCacheDTO loginUser);

    /**
     * 认证成功
     * @param notifyBO
     * @return 返回结果
     */
    boolean verifySuccess(SignAuthNotifyBO notifyBO);

    /**
     * 认证失败
     * @param notifyBO
     * @return 返回结果
     */
    boolean verifyFail(SignAuthNotifyBO notifyBO);
}
